package modele;


import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import modele.exceptions.MembreAdministrationInexistantException;

/** 
 * Class MembreAdministration permet de représenter les membres de l'administration.
 */
public class MembreAdministration extends Personne{

    //L'auteur général 'par défaut' pour les retours sur étudiant sera celui d'identifiant 1.
    //Il doit donc y avoir un membre d'administration d'identifiant 1 dans la base de données.
    static final int id_admin = 1;

    /**
     * Constructeur nécessitant toutes les informations
     * L'identifiant est unique pour un intervenant, mais pas par rapport à Personne.
     * @param idadmin : l'identifiant de la personne
     * @param login : le login de la personne
     * @param password : le mot de passe de la personne
     * @param nom : le nom de la personne
     * @param prenom : le prenom de la personne
     */
    public MembreAdministration(int idadmin, String nom, String prenom){
        super(idadmin, nom, prenom, "", "", "", "", "");
    
    }

   /**
     * Renvoie le membre d'administration correspondant à un identifiant s'il existe, une exception sinon.
     * @param id_admin : l'identifiant de l'admin demandé
     * @return l'admin demandé
     */
    public static MembreAdministration getAdmin(int id_admin) throws MembreAdministrationInexistantException, SQLException
    {
        MembreAdministration resultat = null;

        String requete = "Select id_admin, nom, prenom from administration where id_admin = ?;";
        Connection c = ConnexionBD.getConnection();
        PreparedStatement ps = c.prepareStatement(requete);
        ps.setInt(1, id_admin);
        ResultSet rs = ps.executeQuery();

        if (rs.next())
        {
            //L'admin existe

            int idAdmin = (Integer) rs.getObject(1);
            String nom = (String) rs.getObject(2);
            String prenom = (String) rs.getObject(3);

            resultat = new MembreAdministration(idAdmin, nom, prenom);

        }
        else
        {
            //L'admin n'existe pas
            throw new MembreAdministrationInexistantException();
        }

        c.close();

        return resultat;

    }

}
